package org.fly.jingwei.dao;

import org.fly.jingwei.entity.UserEntity;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author leo
 * @date 2017/3/1
 */
@Repository
public interface UserDao {

    /**
     * 根据登录名查找用户
     *
     * @param name 用户名
     * @return 用户实体
     */
    List<UserEntity> getUserByName(String name);

    /**
     * 分页形式获取用户
     *
     * @param start         起始页
     * @param limit         分页大小
     * @param userGroupName 用户组名
     * @param username      用户名
     * @param userType      用户类型
     * @return 用户实体
     */
    List<UserEntity> getUsersLimit(int start, int limit, String userGroupName, String username, Integer userType);

    /**
     * 根据用户组获取用户
     *
     * @param userGroupName 用户组名
     * @return 用户实体列表
     */
    List<UserEntity> getUsers(String userGroupName);

    /**
     * 更新用户
     *
     * @param user 用户实体
     */
    void updateUser(UserEntity user);

    /**
     * 获取用户数量
     *
     * @param userGroupName 用户组名
     * @return 用户数量
     */
    Integer getUserCount(String userGroupName);

    /**
     * 删除用户
     *
     * @param userId 用户ID
     */
    void deleteUser(Integer userId);

    /**
     * 添加用户
     *
     * @param user 用户实体
     */
    void addUser(UserEntity user);

    /**
     * 获取所有用户
     *
     * @return 获取所有用户
     */
    List<UserEntity> getAllUsers();

    /**
     * 获取最大的用户ID
     *
     * @return 最大用户ID
     */
    Integer selectMaxId();


}
